# -*- coding: utf-8 -*-
"""
@Time ： 2023/10/10 15:04
@Auth ： y.h
@File ：pandas_data_controller.py
@IDE ：PyCharm
@Motto：The sooner you start to code, the longer the program will take. —— Roy Carlson
"""
import pandas

from pythonProjectTemplate.Entity.SystemEntity.calculating_multiple_columns_entity import 多列运算配置文件
from pythonProjectTemplate.Entity.SystemEntity.del_row_or_col_properties import 删除行或列配置文件
from pythonProjectTemplate.Entity.SystemEntity.re_df_name import 更改列名配置文件
from pythonProjectTemplate.Entity.SystemEntity.reset_col_index_properties import 指定列索引配置文件
from pythonProjectTemplate.Service.DataCleansing.data_cleansing import calculating_multiple_columns, col_or_line_sum, \
    condition_del_col_or_line, re_col_name, col_row_conversion, update_col, load_col_values, del_row_or_col, \
    reset_col_index


# 做不了接口,感觉好危险!!!
class 数据操作:
    def 按照条件删除指定数据(self,df: pandas.DataFrame, condition_str: str, is_line=True):
        return condition_del_col_or_line(df, condition_str, is_line)

    def 多列运算(self,data_and_properties: 多列运算配置文件):
        return calculating_multiple_columns(data_and_properties)

    def 指定行或列求和(self,df, range_start: int, range_end: int, result_name: str, flag=False):
        return col_or_line_sum(df, range_start, range_end, result_name, flag)

    def 行列转换(self,df):
        return col_row_conversion(df)

    def 修改列名(self, df, properties: 更改列名配置文件):
        return re_col_name(df, properties)

    def 新增列(self,df, 列索引, 列名, 数据):
        return update_col(df, 列索引, 列名, 数据)

    def 读取某列所有值(self,df, 列索引):
        return load_col_values(df, 列索引)

    def 重置索引列(self,df):
        return df.reset_index()

    def 重构列排序(self, df, 新列表: list):

        if type(新列表) == type(list()):

            return df.loc[:, 新列表]
        else:
            print(f"新列表参数类型错误!")

    def 指定行或列删除(self, properties: 删除行或列配置文件):
        return del_row_or_col(properties)

    # 设置列索引
    def 设置列索引(self, properties: 指定列索引配置文件):
        return reset_col_index(properties)

    # 设置行索引
